]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/asm-x86/microcode.h
[SCSI] aic79xx: user visible misuse wrong SI units (not disk size!)
[linux-2.6-omap-h63xx.git] / include / asm-x86 / microcode.h
index 18b2aeec2adf8cc17f6d5fbc6d0d611a7447f4f6..62c793bb70cacf0fd7abd4d1d96057b6a5d77ed6 100644 (file)
@@ -1,87 +1,47 @@
-extern int microcode_init(void *opaque, struct module *module);
-extern void microcode_exit(void);
+#ifndef ASM_X86__MICROCODE_H
+#define ASM_X86__MICROCODE_H
 
-struct microcode_ops {
-       long (*get_next_ucode)(void **mc, long offset);
-       long (*microcode_get_next_ucode)(void **mc, long offset);
-       int (*get_matching_microcode)(void *mc, int cpu);
-       int (*apply_microcode_check_cpu)(int cpu);
-       int (*microcode_sanity_check)(void *mc);
-       int (*cpu_request_microcode)(int cpu);
-       void (*collect_cpu_info)(int cpu_num);
-       void (*apply_microcode)(int cpu);
-       void (*microcode_fini_cpu)(int cpu);
-       void (*clear_patch)(void *data);
-};
-
-struct microcode_header_intel {
-       unsigned int            hdrver;
-       unsigned int            rev;
-       unsigned int            date;
-       unsigned int            sig;
-       unsigned int            cksum;
-       unsigned int            ldrver;
-       unsigned int            pf;
-       unsigned int            datasize;
-       unsigned int            totalsize;
-       unsigned int            reserved[3];
-};
-
-struct microcode_intel {
-       struct microcode_header_intel hdr;
-       unsigned int            bits[0];
-};
-
-/* microcode format is extended from prescott processors */
-struct extended_signature {
-       unsigned int            sig;
-       unsigned int            pf;
-       unsigned int            cksum;
+struct cpu_signature {
+       unsigned int sig;
+       unsigned int pf;
+       unsigned int rev;
 };
 
-struct extended_sigtable {
-       unsigned int            count;
-       unsigned int            cksum;
-       unsigned int            reserved[3];
-       struct extended_signature sigs[0];
-};
+struct device;
 
-struct equiv_cpu_entry {
-       unsigned int installed_cpu;
-       unsigned int fixed_errata_mask;
-       unsigned int fixed_errata_compare;
-       unsigned int equiv_cpu;
-};
+struct microcode_ops {
+       int  (*request_microcode_user) (int cpu, const void __user *buf, size_t size);
+       int  (*request_microcode_fw) (int cpu, struct device *device);
 
-struct microcode_header_amd {
-       unsigned int  data_code;
-       unsigned int  patch_id;
-       unsigned char mc_patch_data_id[2];
-       unsigned char mc_patch_data_len;
-       unsigned char init_flag;
-       unsigned int  mc_patch_data_checksum;
-       unsigned int  nb_dev_id;
-       unsigned int  sb_dev_id;
-       unsigned char processor_rev_id[2];
-       unsigned char nb_rev_id;
-       unsigned char sb_rev_id;
-       unsigned char bios_api_rev;
-       unsigned char reserved1[3];
-       unsigned int  match_reg[8];
-};
+       void (*apply_microcode) (int cpu);
 
-struct microcode_amd {
-       struct microcode_header_amd hdr;
-       unsigned int mpb[0];
+       int  (*collect_cpu_info) (int cpu, struct cpu_signature *csig);
+       void (*microcode_fini_cpu) (int cpu);
 };
 
 struct ucode_cpu_info {
+       struct cpu_signature cpu_sig;
        int valid;
-       unsigned int sig;
-       unsigned int pf;
-       unsigned int rev;
-       union {
-               struct microcode_intel *mc_intel;
-               struct microcode_amd *mc_amd;
-       } mc;
-};
+       void *mc;
+};
+extern struct ucode_cpu_info ucode_cpu_info[];
+
+#ifdef CONFIG_MICROCODE_INTEL
+extern struct microcode_ops * __init init_intel_microcode(void);
+#else
+static inline struct microcode_ops * __init init_intel_microcode(void)
+{
+       return NULL;
+}
+#endif /* CONFIG_MICROCODE_INTEL */
+
+#ifdef CONFIG_MICROCODE_AMD
+extern struct microcode_ops * __init init_amd_microcode(void);
+#else
+static inline struct microcode_ops * __init init_amd_microcode(void)
+{
+       return NULL;
+}
+#endif
+
+#endif /* ASM_X86__MICROCODE_H */