Merge tag 'mfd-next-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
[linux-2.6-microblaze.git] / arch / x86 / include / asm / cpu_device_id.h
index cf3d621..eb8fced 100644 (file)
 #define X86_CENTAUR_FAM6_C7_D          0xd
 #define X86_CENTAUR_FAM6_NANO          0xf
 
+#define X86_STEPPINGS(mins, maxs)    GENMASK(maxs, mins)
 /**
- * X86_MATCH_VENDOR_FAM_MODEL_FEATURE - Base macro for CPU matching
+ * X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE - Base macro for CPU matching
  * @_vendor:   The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY
  *             The name is expanded to X86_VENDOR_@_vendor
  * @_family:   The family number or X86_FAMILY_ANY
  * @_model:    The model number, model constant or X86_MODEL_ANY
+ * @_steppings:        Bitmask for steppings, stepping constant or X86_STEPPING_ANY
  * @_feature:  A X86_FEATURE bit or X86_FEATURE_ANY
  * @_data:     Driver specific data or NULL. The internal storage
  *             format is unsigned long. The supplied value, pointer
  * into another macro at the usage site for good reasons, then please
  * start this local macro with X86_MATCH to allow easy grepping.
  */
-#define X86_MATCH_VENDOR_FAM_MODEL_FEATURE(_vendor, _family, _model,   \
-                                          _feature, _data) {           \
+#define X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE(_vendor, _family, _model, \
+                                                   _steppings, _feature, _data) { \
        .vendor         = X86_VENDOR_##_vendor,                         \
        .family         = _family,                                      \
        .model          = _model,                                       \
+       .steppings      = _steppings,                                   \
        .feature        = _feature,                                     \
        .driver_data    = (unsigned long) _data                         \
 }
 
+/**
+ * X86_MATCH_VENDOR_FAM_MODEL_FEATURE - Macro for CPU matching
+ * @_vendor:   The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY
+ *             The name is expanded to X86_VENDOR_@_vendor
+ * @_family:   The family number or X86_FAMILY_ANY
+ * @_model:    The model number, model constant or X86_MODEL_ANY
+ * @_feature:  A X86_FEATURE bit or X86_FEATURE_ANY
+ * @_data:     Driver specific data or NULL. The internal storage
+ *             format is unsigned long. The supplied value, pointer
+ *             etc. is casted to unsigned long internally.
+ *
+ * The steppings arguments of X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE() is
+ * set to wildcards.
+ */
+#define X86_MATCH_VENDOR_FAM_MODEL_FEATURE(vendor, family, model, feature, data) \
+       X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE(vendor, family, model, \
+                                               X86_STEPPING_ANY, feature, data)
+
 /**
  * X86_MATCH_VENDOR_FAM_FEATURE - Macro for matching vendor, family and CPU feature
  * @vendor:    The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY
 #define X86_MATCH_INTEL_FAM6_MODEL(model, data)                                \
        X86_MATCH_VENDOR_FAM_MODEL(INTEL, 6, INTEL_FAM6_##model, data)
 
+#define X86_MATCH_INTEL_FAM6_MODEL_STEPPINGS(model, steppings, data)   \
+       X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE(INTEL, 6, INTEL_FAM6_##model, \
+                                                    steppings, X86_FEATURE_ANY, data)
+
 /*
  * Match specific microcode revisions.
  *