aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/include/asm/x86_init.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/include/asm/x86_init.h')
-rw-r--r--arch/x86/include/asm/x86_init.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h
index baa579c8e038..d3d859035af9 100644
--- a/arch/x86/include/asm/x86_init.h
+++ b/arch/x86/include/asm/x86_init.h
@@ -68,6 +68,17 @@ struct x86_init_oem {
68}; 68};
69 69
70/** 70/**
71 * struct x86_init_mapping - platform specific initial kernel pagetable setup
72 * @pagetable_reserve: reserve a range of addresses for kernel pagetable usage
73 *
74 * For more details on the purpose of this hook, look in
75 * init_memory_mapping and the commit that added it.
76 */
77struct x86_init_mapping {
78 void (*pagetable_reserve)(u64 start, u64 end);
79};
80
81/**
71 * struct x86_init_paging - platform specific paging functions 82 * struct x86_init_paging - platform specific paging functions
72 * @pagetable_setup_start: platform specific pre paging_init() call 83 * @pagetable_setup_start: platform specific pre paging_init() call
73 * @pagetable_setup_done: platform specific post paging_init() call 84 * @pagetable_setup_done: platform specific post paging_init() call
@@ -83,11 +94,13 @@ struct x86_init_paging {
83 * boot cpu 94 * boot cpu
84 * @tsc_pre_init: platform function called before TSC init 95 * @tsc_pre_init: platform function called before TSC init
85 * @timer_init: initialize the platform timer (default PIT/HPET) 96 * @timer_init: initialize the platform timer (default PIT/HPET)
97 * @wallclock_init: init the wallclock device
86 */ 98 */
87struct x86_init_timers { 99struct x86_init_timers {
88 void (*setup_percpu_clockev)(void); 100 void (*setup_percpu_clockev)(void);
89 void (*tsc_pre_init)(void); 101 void (*tsc_pre_init)(void);
90 void (*timer_init)(void); 102 void (*timer_init)(void);
103 void (*wallclock_init)(void);
91}; 104};
92 105
93/** 106/**
@@ -121,6 +134,7 @@ struct x86_init_ops {
121 struct x86_init_mpparse mpparse; 134 struct x86_init_mpparse mpparse;
122 struct x86_init_irqs irqs; 135 struct x86_init_irqs irqs;
123 struct x86_init_oem oem; 136 struct x86_init_oem oem;
137 struct x86_init_mapping mapping;
124 struct x86_init_paging paging; 138 struct x86_init_paging paging;
125 struct x86_init_timers timers; 139 struct x86_init_timers timers;
126 struct x86_init_iommu iommu; 140 struct x86_init_iommu iommu;
@@ -154,9 +168,18 @@ struct x86_platform_ops {
154 int (*i8042_detect)(void); 168 int (*i8042_detect)(void);
155}; 169};
156 170
171struct pci_dev;
172
173struct x86_msi_ops {
174 int (*setup_msi_irqs)(struct pci_dev *dev, int nvec, int type);
175 void (*teardown_msi_irq)(unsigned int irq);
176 void (*teardown_msi_irqs)(struct pci_dev *dev);
177};
178
157extern struct x86_init_ops x86_init; 179extern struct x86_init_ops x86_init;
158extern struct x86_cpuinit_ops x86_cpuinit; 180extern struct x86_cpuinit_ops x86_cpuinit;
159extern struct x86_platform_ops x86_platform; 181extern struct x86_platform_ops x86_platform;
182extern struct x86_msi_ops x86_msi;
160 183
161extern void x86_init_noop(void); 184extern void x86_init_noop(void);
162extern void x86_init_uint_noop(unsigned int unused); 185extern void x86_init_uint_noop(unsigned int unused);