diff options
Diffstat (limited to 'include/asm-powerpc/machdep.h')
-rw-r--r-- | include/asm-powerpc/machdep.h | 58 |
1 files changed, 46 insertions, 12 deletions
diff --git a/include/asm-powerpc/machdep.h b/include/asm-powerpc/machdep.h index 6968f4300dca..0872ec228c1e 100644 --- a/include/asm-powerpc/machdep.h +++ b/include/asm-powerpc/machdep.h | |||
@@ -204,6 +204,13 @@ struct machdep_calls { | |||
204 | /* | 204 | /* |
205 | * optional PCI "hooks" | 205 | * optional PCI "hooks" |
206 | */ | 206 | */ |
207 | /* Called in indirect_* to avoid touching devices */ | ||
208 | int (*pci_exclude_device)(struct pci_controller *, unsigned char, unsigned char); | ||
209 | |||
210 | /* Called at then very end of pcibios_init() */ | ||
211 | void (*pcibios_after_init)(void); | ||
212 | |||
213 | #endif /* CONFIG_PPC32 */ | ||
207 | 214 | ||
208 | /* Called after PPC generic resource fixup to perform | 215 | /* Called after PPC generic resource fixup to perform |
209 | machine specific fixups */ | 216 | machine specific fixups */ |
@@ -212,18 +219,9 @@ struct machdep_calls { | |||
212 | /* Called for each PCI bus in the system when it's probed */ | 219 | /* Called for each PCI bus in the system when it's probed */ |
213 | void (*pcibios_fixup_bus)(struct pci_bus *); | 220 | void (*pcibios_fixup_bus)(struct pci_bus *); |
214 | 221 | ||
215 | /* Called when pci_enable_device() is called (initial=0) or | 222 | /* Called when pci_enable_device() is called. Returns 0 to |
216 | * when a device with no assigned resource is found (initial=1). | 223 | * allow assignment/enabling of the device. */ |
217 | * Returns 0 to allow assignment/enabling of the device. */ | 224 | int (*pcibios_enable_device_hook)(struct pci_dev *); |
218 | int (*pcibios_enable_device_hook)(struct pci_dev *, int initial); | ||
219 | |||
220 | /* Called in indirect_* to avoid touching devices */ | ||
221 | int (*pci_exclude_device)(struct pci_controller *, unsigned char, unsigned char); | ||
222 | |||
223 | /* Called at then very end of pcibios_init() */ | ||
224 | void (*pcibios_after_init)(void); | ||
225 | |||
226 | #endif /* CONFIG_PPC32 */ | ||
227 | 225 | ||
228 | /* Called to shutdown machine specific hardware not already controlled | 226 | /* Called to shutdown machine specific hardware not already controlled |
229 | * by other drivers. | 227 | * by other drivers. |
@@ -253,6 +251,16 @@ struct machdep_calls { | |||
253 | */ | 251 | */ |
254 | void (*machine_kexec)(struct kimage *image); | 252 | void (*machine_kexec)(struct kimage *image); |
255 | #endif /* CONFIG_KEXEC */ | 253 | #endif /* CONFIG_KEXEC */ |
254 | |||
255 | #ifdef CONFIG_SUSPEND | ||
256 | /* These are called to disable and enable, respectively, IRQs when | ||
257 | * entering a suspend state. If NULL, then the generic versions | ||
258 | * will be called. The generic versions disable/enable the | ||
259 | * decrementer along with interrupts. | ||
260 | */ | ||
261 | void (*suspend_disable_irqs)(void); | ||
262 | void (*suspend_enable_irqs)(void); | ||
263 | #endif | ||
256 | }; | 264 | }; |
257 | 265 | ||
258 | extern void power4_idle(void); | 266 | extern void power4_idle(void); |
@@ -326,5 +334,31 @@ static inline void log_error(char *buf, unsigned int err_type, int fatal) | |||
326 | ppc_md.log_error(buf, err_type, fatal); | 334 | ppc_md.log_error(buf, err_type, fatal); |
327 | } | 335 | } |
328 | 336 | ||
337 | #define __define_machine_initcall(mach,level,fn,id) \ | ||
338 | static int __init __machine_initcall_##mach##_##fn(void) { \ | ||
339 | if (machine_is(mach)) return fn(); \ | ||
340 | return 0; \ | ||
341 | } \ | ||
342 | __define_initcall(level,__machine_initcall_##mach##_##fn,id); | ||
343 | |||
344 | #define machine_core_initcall(mach,fn) __define_machine_initcall(mach,"1",fn,1) | ||
345 | #define machine_core_initcall_sync(mach,fn) __define_machine_initcall(mach,"1s",fn,1s) | ||
346 | #define machine_postcore_initcall(mach,fn) __define_machine_initcall(mach,"2",fn,2) | ||
347 | #define machine_postcore_initcall_sync(mach,fn) __define_machine_initcall(mach,"2s",fn,2s) | ||
348 | #define machine_arch_initcall(mach,fn) __define_machine_initcall(mach,"3",fn,3) | ||
349 | #define machine_arch_initcall_sync(mach,fn) __define_machine_initcall(mach,"3s",fn,3s) | ||
350 | #define machine_subsys_initcall(mach,fn) __define_machine_initcall(mach,"4",fn,4) | ||
351 | #define machine_subsys_initcall_sync(mach,fn) __define_machine_initcall(mach,"4s",fn,4s) | ||
352 | #define machine_fs_initcall(mach,fn) __define_machine_initcall(mach,"5",fn,5) | ||
353 | #define machine_fs_initcall_sync(mach,fn) __define_machine_initcall(mach,"5s",fn,5s) | ||
354 | #define machine_rootfs_initcall(mach,fn) __define_machine_initcall(mach,"rootfs",fn,rootfs) | ||
355 | #define machine_device_initcall(mach,fn) __define_machine_initcall(mach,"6",fn,6) | ||
356 | #define machine_device_initcall_sync(mach,fn) __define_machine_initcall(mach,"6s",fn,6s) | ||
357 | #define machine_late_initcall(mach,fn) __define_machine_initcall(mach,"7",fn,7) | ||
358 | #define machine_late_initcall_sync(mach,fn) __define_machine_initcall(mach,"7s",fn,7s) | ||
359 | |||
360 | void generic_suspend_disable_irqs(void); | ||
361 | void generic_suspend_enable_irqs(void); | ||
362 | |||
329 | #endif /* __KERNEL__ */ | 363 | #endif /* __KERNEL__ */ |
330 | #endif /* _ASM_POWERPC_MACHDEP_H */ | 364 | #endif /* _ASM_POWERPC_MACHDEP_H */ |