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