Merge branch 'master' of git://git.denx.de/u-boot-x86
[oweals/u-boot.git] / arch / x86 / include / asm / mtrr.h
index 3c1174043cf6f1c62c60db6cdce5d13ec6d887b3..f9b30f68bdfca86b518bda50898cded40cc83b9b 100644 (file)
 #define MTRR_CAP_MSR           0x0fe
 #define MTRR_DEF_TYPE_MSR      0x2ff
 
+#define MTRR_CAP_SMRR          (1 << 11)
+#define MTRR_CAP_WC            (1 << 10)
+#define MTRR_CAP_FIX           (1 << 8)
+#define MTRR_CAP_VCNT_MASK     0xff
+
 #define MTRR_DEF_TYPE_EN       (1 << 11)
 #define MTRR_DEF_TYPE_FIX_EN   (1 << 10)
 
 /* Number of MTRRs supported */
 #define MTRR_COUNT             8
 
+#define NUM_FIXED_MTRRS                11
+#define RANGES_PER_FIXED_MTRR  8
+#define NUM_FIXED_RANGES       (NUM_FIXED_MTRRS * RANGES_PER_FIXED_MTRR)
+
+#define MTRR_FIX_64K_00000_MSR 0x250
+#define MTRR_FIX_16K_80000_MSR 0x258
+#define MTRR_FIX_16K_A0000_MSR 0x259
+#define MTRR_FIX_4K_C0000_MSR  0x268
+#define MTRR_FIX_4K_C8000_MSR  0x269
+#define MTRR_FIX_4K_D0000_MSR  0x26a
+#define MTRR_FIX_4K_D8000_MSR  0x26b
+#define MTRR_FIX_4K_E0000_MSR  0x26c
+#define MTRR_FIX_4K_E8000_MSR  0x26d
+#define MTRR_FIX_4K_F0000_MSR  0x26e
+#define MTRR_FIX_4K_F8000_MSR  0x26f
+
+#define MTRR_FIX_TYPE(t)       ((t << 24) | (t << 16) | (t << 8) | t)
+
 #if !defined(__ASSEMBLER__)
 
 /**
@@ -65,7 +88,6 @@ void mtrr_open(struct mtrr_state *state);
  *
  * @state:     Structure from mtrr_open()
  */
-/*  */
 void mtrr_close(struct mtrr_state *state);
 
 /**
@@ -76,6 +98,8 @@ void mtrr_close(struct mtrr_state *state);
  * @type:      Requested type (MTRR_TYPE_)
  * @start:     Start address
  * @size:      Size
+ *
+ * @return:    0 on success, non-zero on failure
  */
 int mtrr_add_request(int type, uint64_t start, uint64_t size);
 
@@ -86,6 +110,8 @@ int mtrr_add_request(int type, uint64_t start, uint64_t size);
  * It must be called with caches disabled.
  *
  * @do_caches: true if caches are currently on
+ *
+ * @return:    0 on success, non-zero on failure
  */
 int mtrr_commit(bool do_caches);