summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2010-01-15 14:28:16 -0800
committerEric Anholt <eric@anholt.net>2010-02-25 10:41:49 -0800
commit291a576d72d234c42f5d9655ee0698f20eec8bd8 (patch)
treee4cce2c5f890b5acd95880fda13900ac51236b69
parent67736dbc9435ab95ab4092d73a5b057039d14d30 (diff)
Add support for Sandybridge INSTDONE regs.
-rw-r--r--lib/instdone.c82
-rw-r--r--lib/intel_reg.h67
2 files changed, 148 insertions, 1 deletions
diff --git a/lib/instdone.c b/lib/instdone.c
index ca4002e7..bbb72b32 100644
--- a/lib/instdone.c
+++ b/lib/instdone.c
@@ -58,10 +58,90 @@ gen4_instdone1_bit(uint32_t bit, const char *name)
add_instdone_bit(INST_DONE_1, bit, name);
}
+static void
+gen6_instdone1_bit(uint32_t bit, const char *name)
+{
+ add_instdone_bit(GEN6_INSTDONE_1, bit, name);
+}
+
+static void
+gen6_instdone2_bit(uint32_t bit, const char *name)
+{
+ add_instdone_bit(GEN6_INSTDONE_2, bit, name);
+}
+
void
init_instdone_definitions(void)
{
- if (IS_965(devid)) {
+ if (IS_GEN6(devid)) {
+ /* Now called INSTDONE_1 in the docs. */
+ gen6_instdone1_bit(GEN6_MA_3_DONE, "Message Arbiter 3");
+ gen6_instdone1_bit(GEN6_EU_32_DONE, "EU 32");
+ gen6_instdone1_bit(GEN6_EU_31_DONE, "EU 31");
+ gen6_instdone1_bit(GEN6_EU_30_DONE, "EU 30");
+ gen6_instdone1_bit(GEN6_MA_3_DONE, "Message Arbiter 2");
+ gen6_instdone1_bit(GEN6_EU_22_DONE, "EU 22");
+ gen6_instdone1_bit(GEN6_EU_21_DONE, "EU 21");
+ gen6_instdone1_bit(GEN6_EU_20_DONE, "EU 20");
+ gen6_instdone1_bit(GEN6_MA_3_DONE, "Message Arbiter 1");
+ gen6_instdone1_bit(GEN6_EU_12_DONE, "EU 12");
+ gen6_instdone1_bit(GEN6_EU_11_DONE, "EU 11");
+ gen6_instdone1_bit(GEN6_EU_10_DONE, "EU 10");
+ gen6_instdone1_bit(GEN6_MA_3_DONE, "Message Arbiter 0");
+ gen6_instdone1_bit(GEN6_EU_02_DONE, "EU 02");
+ gen6_instdone1_bit(GEN6_EU_01_DONE, "EU 01");
+ gen6_instdone1_bit(GEN6_EU_00_DONE, "EU 00");
+
+ gen6_instdone1_bit(GEN6_IC_3_DONE, "IC 3");
+ gen6_instdone1_bit(GEN6_IC_2_DONE, "IC 2");
+ gen6_instdone1_bit(GEN6_IC_1_DONE, "IC 1");
+ gen6_instdone1_bit(GEN6_IC_0_DONE, "IC 0");
+ gen6_instdone1_bit(GEN6_ISC_10_DONE, "ISC 1/0");
+ gen6_instdone1_bit(GEN6_ISC_32_DONE, "ISC 3/2");
+
+ gen6_instdone1_bit(GEN6_VSC_DONE, "VSC");
+ gen6_instdone1_bit(GEN6_IEF_DONE, "IEF");
+ gen6_instdone1_bit(GEN6_VFE_DONE, "VFE");
+ gen6_instdone1_bit(GEN6_TD_DONE, "TD");
+ gen6_instdone1_bit(GEN6_TS_DONE, "TS");
+ gen6_instdone1_bit(GEN6_GW_DONE, "GW");
+ gen6_instdone1_bit(GEN6_HIZ_DONE, "HIZ");
+ gen6_instdone1_bit(GEN6_AVS_DONE, "AVS");
+
+ /* Now called INSTDONE_2 in the docs. */
+ gen6_instdone2_bit(GEN6_GAM_DONE, "GAM");
+ gen6_instdone2_bit(GEN6_CS_DONE, "CS");
+ gen6_instdone2_bit(GEN6_WMBE_DONE, "WMBE");
+ gen6_instdone2_bit(GEN6_SVRW_DONE, "SVRW");
+ gen6_instdone2_bit(GEN6_RCC_DONE, "RCC");
+ gen6_instdone2_bit(GEN6_SVG_DONE, "SVG");
+ gen6_instdone2_bit(GEN6_ISC_DONE, "ISC");
+ gen6_instdone2_bit(GEN6_MT_DONE, "MT");
+ gen6_instdone2_bit(GEN6_RCPFE_DONE, "RCPFE");
+ gen6_instdone2_bit(GEN6_RCPBE_DONE, "RCPBE");
+ gen6_instdone2_bit(GEN6_VDI_DONE, "VDI");
+ gen6_instdone2_bit(GEN6_RCZ_DONE, "RCZ");
+ gen6_instdone2_bit(GEN6_DAP_DONE, "DAP");
+ gen6_instdone2_bit(GEN6_PSD_DONE, "PSD");
+ gen6_instdone2_bit(GEN6_IZ_DONE, "IZ");
+ gen6_instdone2_bit(GEN6_WMFE_DONE, "WMFE");
+ gen6_instdone2_bit(GEN6_SVSM_DONE, "SVSM");
+ gen6_instdone2_bit(GEN6_QC_DONE, "QC");
+ gen6_instdone2_bit(GEN6_FL_DONE, "FL");
+ gen6_instdone2_bit(GEN6_SC_DONE, "SC");
+ gen6_instdone2_bit(GEN6_DM_DONE, "DM");
+ gen6_instdone2_bit(GEN6_FT_DONE, "FT");
+ gen6_instdone2_bit(GEN6_DG_DONE, "DG");
+ gen6_instdone2_bit(GEN6_SI_DONE, "SI");
+ gen6_instdone2_bit(GEN6_SO_DONE, "SO");
+ gen6_instdone2_bit(GEN6_PL_DONE, "PL");
+ gen6_instdone2_bit(GEN6_VME_DONE, "VME");
+ gen6_instdone2_bit(GEN6_SF_DONE, "SF");
+ gen6_instdone2_bit(GEN6_CL_DONE, "CL");
+ gen6_instdone2_bit(GEN6_GS_DONE, "GS");
+ gen6_instdone2_bit(GEN6_VS0_DONE, "VS0");
+ gen6_instdone2_bit(GEN6_VF_DONE, "VF");
+ } else if (IS_965(devid)) {
gen4_instdone_bit(I965_ROW_0_EU_0_DONE, "Row 0, EU 0");
gen4_instdone_bit(I965_ROW_0_EU_1_DONE, "Row 0, EU 1");
gen4_instdone_bit(I965_ROW_0_EU_2_DONE, "Row 0, EU 2");
diff --git a/lib/intel_reg.h b/lib/intel_reg.h
index a743e674..7b9c7730 100644
--- a/lib/intel_reg.h
+++ b/lib/intel_reg.h
@@ -462,6 +462,39 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# define I965_IC_ROW_1_DONE (1 << 2)
# define I965_CP_DONE (1 << 1)
# define I965_RING_0_ENABLE (1 << 0)
+
+#define GEN6_INSTDONE_1 0x206c
+# define GEN6_MA_3_DONE (1 << 31)
+# define GEN6_EU_32_DONE (1 << 30)
+# define GEN6_EU_31_DONE (1 << 29)
+# define GEN6_EU_30_DONE (1 << 28)
+# define GEN6_MA_2_DONE (1 << 27)
+# define GEN6_EU_22_DONE (1 << 26)
+# define GEN6_EU_21_DONE (1 << 25)
+# define GEN6_EU_20_DONE (1 << 24)
+# define GEN6_MA_1_DONE (1 << 23)
+# define GEN6_EU_12_DONE (1 << 22)
+# define GEN6_EU_11_DONE (1 << 21)
+# define GEN6_EU_10_DONE (1 << 20)
+# define GEN6_MA_0_DONE (1 << 19)
+# define GEN6_EU_02_DONE (1 << 18)
+# define GEN6_EU_01_DONE (1 << 17)
+# define GEN6_EU_00_DONE (1 << 16)
+# define GEN6_IC_3_DONE (1 << 15)
+# define GEN6_IC_2_DONE (1 << 14)
+# define GEN6_IC_1_DONE (1 << 13)
+# define GEN6_IC_0_DONE (1 << 12)
+# define GEN6_ISC_10_DONE (1 << 11)
+# define GEN6_ISC_32_DONE (1 << 10)
+# define GEN6_VSC_DONE (1 << 9)
+# define GEN6_IEF_DONE (1 << 8)
+# define GEN6_VFE_DONE (1 << 7)
+# define GEN6_TD_DONE (1 << 6)
+# define GEN6_TS_DONE (1 << 4)
+# define GEN6_GW_DONE (1 << 3)
+# define GEN6_HIZ_DONE (1 << 2)
+# define GEN6_AVS_DONE (1 << 1)
+
#define INST_PS_I965 0x2070
/* Current active ring head address:
@@ -495,6 +528,40 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# define I965_VS0_CS_DONE (1 << 1)
# define I965_VF_CS_DONE (1 << 0)
+#define GEN6_INSTDONE_2 0x207c
+# define GEN6_GAM_DONE (1 << 31)
+# define GEN6_CS_DONE (1 << 30)
+# define GEN6_WMBE_DONE (1 << 29)
+# define GEN6_SVRW_DONE (1 << 28)
+# define GEN6_RCC_DONE (1 << 27)
+# define GEN6_SVG_DONE (1 << 26)
+# define GEN6_ISC_DONE (1 << 25)
+# define GEN6_MT_DONE (1 << 24)
+# define GEN6_RCPFE_DONE (1 << 23)
+# define GEN6_RCPBE_DONE (1 << 22)
+# define GEN6_VDI_DONE (1 << 21)
+# define GEN6_RCZ_DONE (1 << 20)
+# define GEN6_DAP_DONE (1 << 19)
+# define GEN6_PSD_DONE (1 << 18)
+# define GEN6_IZ_DONE (1 << 17)
+# define GEN6_WMFE_DONE (1 << 16)
+# define GEN6_SVSM_DONE (1 << 15)
+# define GEN6_QC_DONE (1 << 14)
+# define GEN6_FL_DONE (1 << 13)
+# define GEN6_SC_DONE (1 << 12)
+# define GEN6_DM_DONE (1 << 11)
+# define GEN6_FT_DONE (1 << 10)
+# define GEN6_DG_DONE (1 << 9)
+# define GEN6_SI_DONE (1 << 8)
+# define GEN6_SO_DONE (1 << 7)
+# define GEN6_PL_DONE (1 << 6)
+# define GEN6_VME_DONE (1 << 5)
+# define GEN6_SF_DONE (1 << 4)
+# define GEN6_CL_DONE (1 << 3)
+# define GEN6_GS_DONE (1 << 2)
+# define GEN6_VS0_DONE (1 << 1)
+# define GEN6_VF_DONE (1 << 0)
+
#define CACHE_MODE_0 0x2120
#define CACHE_MODE_1 0x2124
#define MI_MODE 0x209c