xref: /openbmc/linux/arch/x86/include/asm/microcode.h (revision 1965aae3c98397aad957412413c07e97b1bd4e64)
1*1965aae3SH. Peter Anvin #ifndef _ASM_X86_MICROCODE_H
2*1965aae3SH. Peter Anvin #define _ASM_X86_MICROCODE_H
3bb898558SAl Viro 
4bb898558SAl Viro struct cpu_signature {
5bb898558SAl Viro 	unsigned int sig;
6bb898558SAl Viro 	unsigned int pf;
7bb898558SAl Viro 	unsigned int rev;
8bb898558SAl Viro };
9bb898558SAl Viro 
10bb898558SAl Viro struct device;
11bb898558SAl Viro 
12bb898558SAl Viro struct microcode_ops {
13bb898558SAl Viro 	int  (*request_microcode_user) (int cpu, const void __user *buf, size_t size);
14bb898558SAl Viro 	int  (*request_microcode_fw) (int cpu, struct device *device);
15bb898558SAl Viro 
16bb898558SAl Viro 	void (*apply_microcode) (int cpu);
17bb898558SAl Viro 
18bb898558SAl Viro 	int  (*collect_cpu_info) (int cpu, struct cpu_signature *csig);
19bb898558SAl Viro 	void (*microcode_fini_cpu) (int cpu);
20bb898558SAl Viro };
21bb898558SAl Viro 
22bb898558SAl Viro struct ucode_cpu_info {
23bb898558SAl Viro 	struct cpu_signature cpu_sig;
24bb898558SAl Viro 	int valid;
25bb898558SAl Viro 	void *mc;
26bb898558SAl Viro };
27bb898558SAl Viro extern struct ucode_cpu_info ucode_cpu_info[];
28bb898558SAl Viro 
29bb898558SAl Viro #ifdef CONFIG_MICROCODE_INTEL
30bb898558SAl Viro extern struct microcode_ops * __init init_intel_microcode(void);
31bb898558SAl Viro #else
32bb898558SAl Viro static inline struct microcode_ops * __init init_intel_microcode(void)
33bb898558SAl Viro {
34bb898558SAl Viro 	return NULL;
35bb898558SAl Viro }
36bb898558SAl Viro #endif /* CONFIG_MICROCODE_INTEL */
37bb898558SAl Viro 
38bb898558SAl Viro #ifdef CONFIG_MICROCODE_AMD
39bb898558SAl Viro extern struct microcode_ops * __init init_amd_microcode(void);
40bb898558SAl Viro #else
41bb898558SAl Viro static inline struct microcode_ops * __init init_amd_microcode(void)
42bb898558SAl Viro {
43bb898558SAl Viro 	return NULL;
44bb898558SAl Viro }
45bb898558SAl Viro #endif
46bb898558SAl Viro 
47*1965aae3SH. Peter Anvin #endif /* _ASM_X86_MICROCODE_H */
48