diff options
author | Jerome Glisse <jglisse@redhat.com> | 2010-04-15 22:51:59 +0200 |
---|---|---|
committer | Jerome Glisse <jglisse@redhat.com> | 2010-04-15 22:51:59 +0200 |
commit | 5b7ea48a52382deb083be8b251174ad74a8ab6e5 (patch) | |
tree | 55af2973af034d3057045ec74fe0091cc5b69b7e | |
parent | dfaba1972382ae8e614fa8a5a56661edd90d6bf5 (diff) |
radeondb: add support for dumping register
Register information are store in json file and a
tools allow to automaticly generate files for the
dumping utilities.
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
-rw-r--r-- | Makefile.am | 4 | ||||
-rw-r--r-- | configure.ac | 3 | ||||
-rw-r--r-- | json/rs600.json | 3684 | ||||
-rw-r--r-- | src/Makefile.am | 11 | ||||
-rw-r--r-- | src/radeon.c | 2 | ||||
-rw-r--r-- | src/radeon_pci.c | 130 | ||||
-rw-r--r-- | src/radeon_priv.h | 10 | ||||
-rw-r--r-- | src/radeon_reg.c | 139 | ||||
-rw-r--r-- | src/radeon_reg.h | 60 | ||||
-rw-r--r-- | src/radeondb.c | 7 | ||||
-rw-r--r-- | src/rs600_reg.c | 83 | ||||
-rw-r--r-- | tools/Makefile.am | 29 | ||||
-rw-r--r-- | tools/rdb.c | 153 | ||||
-rw-r--r-- | tools/rdb_json.c | 123 | ||||
-rw-r--r-- | tools/rdb_json.h | 49 |
15 files changed, 4480 insertions, 7 deletions
diff --git a/Makefile.am b/Makefile.am index a39844f..c79b63d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -23,4 +23,6 @@ AUTOMAKE_OPTIONS = foreign debug: $(MAKE) all "CFLAGS=-O0 -g3 -DDEBUG" -SUBDIRS = src +SUBDIRS = \ + tools \ + src diff --git a/configure.ac b/configure.ac index 72f92dd..48856ec 100644 --- a/configure.ac +++ b/configure.ac @@ -35,5 +35,6 @@ AC_PROG_INSTALL PKG_CHECK_MODULES(LIBJANSSON, jansson) PKG_CHECK_MODULES(LIBDRM, libdrm) PKG_CHECK_MODULES(LIBDRM_RADEON, libdrm_radeon) +PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0]) -AC_OUTPUT([Makefile src/Makefile]) +AC_OUTPUT([Makefile src/Makefile tools/Makefile]) diff --git a/json/rs600.json b/json/rs600.json new file mode 100644 index 0000000..90087eb --- /dev/null +++ b/json/rs600.json @@ -0,0 +1,3684 @@ +{ + "block": [ + { + "name": "MMIO", + "0x00007D08": { + "name": "DC_HOT_PLUG_DETECT1_INT_CONTROL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "DC_HOT_PLUG_DETECT1_INT_ACK", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 8, + "name": "DC_HOT_PLUG_DETECT1_INT_POLARITY", + "value": [], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 16, + "name": "DC_HOT_PLUG_DETECT1_INT_EN", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + } + ] + }, + "0x00000040": { + "name": "GEN_INT_CNTL", + "size": 32, + "field": [ + { + "bl": 18, + "name": "SCRATCH_INT_MASK", + "value": [], + "description": "", + "access": "RW", + "bf": 18 + }, + { + "bl": 19, + "name": "GUI_IDLE_MASK", + "value": [], + "description": "", + "access": "RW", + "bf": 19 + }, + { + "bl": 13, + "name": "DMA_VIPH1_INT_EN", + "value": [], + "description": "", + "access": "RW", + "bf": 13 + }, + { + "bl": 14, + "name": "DMA_VIPH2_INT_EN", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 15, + "name": "DMA_VIPH3_INT_EN", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 17, + "name": "I2C_INT_EN", + "value": [], + "description": "", + "access": "RW", + "bf": 17 + }, + { + "bl": 19, + "name": "GUI_IDLE", + "value": [], + "description": "", + "access": "RW", + "bf": 19 + }, + { + "bl": 24, + "name": "VIPH_INT_EN", + "value": [], + "description": "", + "access": "RW", + "bf": 24 + }, + { + "bl": 25, + "name": "SW_INT_EN", + "value": [], + "description": "", + "access": "RW", + "bf": 25 + }, + { + "bl": 27, + "name": "GEYSERVILLE", + "value": [], + "description": "", + "access": "RW", + "bf": 27 + }, + { + "bl": 28, + "name": "HDCP_AUTHORIZED_INT", + "value": [], + "description": "", + "access": "RW", + "bf": 28 + }, + { + "bl": 29, + "name": "DVI_I2C_INT", + "value": [], + "description": "", + "access": "RW", + "bf": 29 + }, + { + "bl": 30, + "name": "GUIDMA", + "value": [], + "description": "", + "access": "RW", + "bf": 30 + }, + { + "bl": 31, + "name": "VIDDMA", + "value": [], + "description": "", + "access": "RW", + "bf": 31 + } + ] + }, + "0x00007D10": { + "name": "DC_HOT_PLUG_DETECT2_CONTROL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "DC_HOT_PLUG_DETECT2_EN", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + } + ] + }, + "0x000060A4": { + "name": "D1CRTC_STATUS_FRAME_COUNT", + "size": 32, + "field": [ + { + "bl": 23, + "name": "D1CRTC_FRAME_COUNT", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + } + ] + }, + "0x00000E40": { + "name": "RBBM_STATUS", + "size": 32, + "field": [ + { + "bl": 6, + "name": "CMDFIFO_AVAIL", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 8, + "name": "HIRQ_ON_RBB", + "value": [], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 9, + "name": "CPRQ_ON_RBB", + "value": [], + "description": "", + "access": "RW", + "bf": 9 + }, + { + "bl": 10, + "name": "CFRQ_ON_RBB", + "value": [], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 11, + "name": "HIRQ_IN_RTBUF", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 12, + "name": "CPRQ_IN_RTBUF", + "value": [], + "description": "", + "access": "RW", + "bf": 12 + }, + { + "bl": 13, + "name": "CFRQ_IN_RTBUF", + "value": [], + "description": "", + "access": "RW", + "bf": 13 + }, + { + "bl": 14, + "name": "CF_PIPE_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 15, + "name": "ENG_EV_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 16, + "name": "CP_CMDSTRM_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + }, + { + "bl": 17, + "name": "E2_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 17 + }, + { + "bl": 18, + "name": "RB2D_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 18 + }, + { + "bl": 19, + "name": "RB3D_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 19 + }, + { + "bl": 20, + "name": "VAP_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + }, + { + "bl": 21, + "name": "RE_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 21 + }, + { + "bl": 22, + "name": "TAM_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 22 + }, + { + "bl": 23, + "name": "TDM_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 23 + }, + { + "bl": 24, + "name": "PB_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 24 + }, + { + "bl": 25, + "name": "TIM_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 25 + }, + { + "bl": 26, + "name": "GA_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 26 + }, + { + "bl": 27, + "name": "CBA2D_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 27 + }, + { + "bl": 31, + "name": "GUI_ACTIVE", + "value": [], + "description": "", + "access": "RW", + "bf": 31 + } + ] + }, + "0x00000070": { + "name": "MC_IND_INDEX", + "size": 32, + "field": [ + { + "bl": 15, + "name": "MC_IND_ADDR", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 16, + "name": "MC_IND_SEQ_RBS_0", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + }, + { + "bl": 17, + "name": "MC_IND_SEQ_RBS_1", + "value": [], + "description": "", + "access": "RW", + "bf": 17 + }, + { + "bl": 18, + "name": "MC_IND_SEQ_RBS_2", + "value": [], + "description": "", + "access": "RW", + "bf": 18 + }, + { + "bl": 19, + "name": "MC_IND_SEQ_RBS_3", + "value": [], + "description": "", + "access": "RW", + "bf": 19 + }, + { + "bl": 20, + "name": "MC_IND_AIC_RBS", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + }, + { + "bl": 21, + "name": "MC_IND_CITF_ARB0", + "value": [], + "description": "", + "access": "RW", + "bf": 21 + }, + { + "bl": 22, + "name": "MC_IND_CITF_ARB1", + "value": [], + "description": "", + "access": "RW", + "bf": 22 + }, + { + "bl": 23, + "name": "MC_IND_WR_EN", + "value": [], + "description": "", + "access": "RW", + "bf": 23 + }, + { + "bl": 24, + "name": "MC_IND_RD_INV", + "value": [], + "description": "", + "access": "RW", + "bf": 24 + } + ] + }, + "0x000007C0": { + "name": "CP_STAT", + "size": 32, + "field": [ + { + "bl": 0, + "name": "MRU_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "MWU_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 2, + "name": "RSIU_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 2 + }, + { + "bl": 3, + "name": "RCIU_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 3 + }, + { + "bl": 9, + "name": "CSF_PRIMARY_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 9 + }, + { + "bl": 10, + "name": "CSF_INDIRECT_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 11, + "name": "CSQ_PRIMARY_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 12, + "name": "CSQ_INDIRECT_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 12 + }, + { + "bl": 13, + "name": "CSI_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 13 + }, + { + "bl": 14, + "name": "CSF_INDIRECT2_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 15, + "name": "CSQ_INDIRECT2_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 28, + "name": "GUIDMA_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 28 + }, + { + "bl": 29, + "name": "VIDDMA_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 29 + }, + { + "bl": 30, + "name": "CMDSTRM_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 30 + }, + { + "bl": 31, + "name": "CP_BUSY", + "value": [], + "description": "", + "access": "RW", + "bf": 31 + } + ] + }, + "0x0000004C": { + "name": "BUS_CNTL", + "size": 32, + "field": [ + { + "bl": 14, + "name": "BUS_MASTER_DIS", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 20, + "name": "BUS_MSI_REARM", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x00006548": { + "name": "D1MODE_PRIORITY_A_CNT", + "size": 32, + "field": [ + { + "bl": 14, + "name": "D1MODE_PRIORITY_MARK_A", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 16, + "name": "D1MODE_PRIORITY_A_OFF", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + }, + { + "bl": 20, + "name": "D1MODE_PRIORITY_A_ALWAYS_ON", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + }, + { + "bl": 24, + "name": "D1MODE_PRIORITY_A_FORCE_MASK", + "value": [], + "description": "", + "access": "RW", + "bf": 24 + } + ] + }, + "0x00007A38": { + "name": "DACB_AUTODETECT_INT_CONTROL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "DACB_AUTODETECT_ACK", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 16, + "name": "DACB_AUTODETECT_INT_ENABLE", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + } + ] + }, + "0x00006540": { + "name": "DxMODE_INT_MASK", + "size": 32, + "field": [ + { + "bl": 0, + "name": "D1MODE_VBLANK_INT_MASK", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 4, + "name": "D1MODE_VLINE_INT_MASK", + "value": [], + "description": "", + "access": "RW", + "bf": 4 + }, + { + "bl": 8, + "name": "D2MODE_VBLANK_INT_MASK", + "value": [], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 12, + "name": "D2MODE_VLINE_INT_MASK", + "value": [], + "description": "", + "access": "RW", + "bf": 12 + }, + { + "bl": 30, + "name": "D1MODE_VBLANK_CP_SEL", + "value": [], + "description": "", + "access": "RW", + "bf": 30 + }, + { + "bl": 31, + "name": "D2MODE_VBLANK_CP_SEL", + "value": [], + "description": "", + "access": "RW", + "bf": 31 + } + ] + }, + "0x00000044": { + "name": "GEN_INT_STATUS", + "size": 32, + "field": [ + { + "bl": 0, + "name": "DISPLAY_INT_STAT", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "VGA_INT_STAT", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 8, + "name": "CAP0_INT_ACTIVE", + "value": [], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 12, + "name": "DMA_VIPH0_INT", + "value": [], + "description": "", + "access": "RW", + "bf": 12 + }, + { + "bl": 13, + "name": "DMA_VIPH1_INT", + "value": [], + "description": "", + "access": "RW", + "bf": 13 + }, + { + "bl": 14, + "name": "DMA_VIPH2_INT", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 15, + "name": "DMA_VIPH3_INT", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 16, + "name": "MC_PROBE_FAULT_STAT", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + }, + { + "bl": 17, + "name": "I2C_INT", + "value": [], + "description": "", + "access": "RW", + "bf": 17 + }, + { + "bl": 18, + "name": "SCRATCH_INT_STAT", + "value": [], + "description": "", + "access": "RW", + "bf": 18 + }, + { + "bl": 19, + "name": "GUI_IDLE_STAT", + "value": [], + "description": "", + "access": "RW", + "bf": 19 + }, + { + "bl": 20, + "name": "ATI_OVERDRIVE_INT_STAT", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + }, + { + "bl": 21, + "name": "MC_PROTECTION_FAULT_STAT", + "value": [], + "description": "", + "access": "RW", + "bf": 21 + }, + { + "bl": 22, + "name": "RBBM_READ_INT_STAT", + "value": [], + "description": "", + "access": "RW", + "bf": 22 + }, + { + "bl": 23, + "name": "CB_CONTEXT_SWITCH_STAT", + "value": [], + "description": "", + "access": "RW", + "bf": 23 + }, + { + "bl": 24, + "name": "VIPH_INT", + "value": [], + "description": "", + "access": "RW", + "bf": 24 + }, + { + "bl": 25, + "name": "SW_INT", + "value": [], + "description": "", + "access": "RW", + "bf": 25 + }, + { + "bl": 26, + "name": "SW_INT_SET", + "value": [], + "description": "", + "access": "RW", + "bf": 26 + }, + { + "bl": 27, + "name": "IDCT_INT_STAT", + "value": [], + "description": "", + "access": "RW", + "bf": 27 + }, + { + "bl": 30, + "name": "GUIDMA_STAT", + "value": [], + "description": "", + "access": "RW", + "bf": 30 + }, + { + "bl": 31, + "name": "VIDDMA_STAT", + "value": [], + "description": "", + "access": "RW", + "bf": 31 + } + ] + }, + "0x00006534": { + "name": "D1MODE_VBLANK_STATUS", + "size": 32, + "field": [ + { + "bl": 0, + "name": "D1MODE_VBLANK_OCCURRED", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 4, + "name": "D1MODE_VBLANK_ACK", + "value": [], + "description": "", + "access": "RW", + "bf": 4 + }, + { + "bl": 12, + "name": "D1MODE_VBLANK_STAT", + "value": [], + "description": "", + "access": "RW", + "bf": 12 + }, + { + "bl": 16, + "name": "D1MODE_VBLANK_INTERRUPT", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + } + ] + }, + "0x000068A4": { + "name": "D2CRTC_STATUS_FRAME_COUNT", + "size": 32, + "field": [ + { + "bl": 23, + "name": "D2CRTC_FRAME_COUNT", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + } + ] + }, + "0x00000074": { + "name": "MC_IND_DATA", + "size": 32, + "field": [ + { + "bl": 31, + "name": "MC_IND_DATA", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + } + ] + }, + "0x00007828": { + "name": "DACA_AUTODETECT_CONTROL", + "size": 32, + "field": [ + { + "bl": 1, + "name": "DACA_AUTODETECT_MODE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 15, + "name": "DACA_AUTODETECT_FRAME_TIME_COUNTER", + "value": [], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 17, + "name": "DACA_AUTODETECT_CHECK_MASK", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + } + ] + }, + "0x00007D00": { + "name": "DC_HOT_PLUG_DETECT1_CONTROL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "DC_HOT_PLUG_DETECT1_EN", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + } + ] + }, + "0x00006D34": { + "name": "D2MODE_VBLANK_STATUS", + "size": 32, + "field": [ + { + "bl": 0, + "name": "D2MODE_VBLANK_OCCURRED", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 4, + "name": "D2MODE_VBLANK_ACK", + "value": [], + "description": "", + "access": "RW", + "bf": 4 + }, + { + "bl": 12, + "name": "D2MODE_VBLANK_STAT", + "value": [], + "description": "", + "access": "RW", + "bf": 12 + }, + { + "bl": 16, + "name": "D2MODE_VBLANK_INTERRUPT", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + } + ] + }, + "0x00007EDC": { + "name": "DISP_INTERRUPT_STATUS", + "size": 32, + "field": [ + { + "bl": 4, + "name": "LB_D1_VBLANK_INTERRUPT", + "value": [], + "description": "", + "access": "RW", + "bf": 4 + }, + { + "bl": 5, + "name": "LB_D2_VBLANK_INTERRUPT", + "value": [], + "description": "", + "access": "RW", + "bf": 5 + }, + { + "bl": 16, + "name": "DACA_AUTODETECT_INTERRUPT", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + }, + { + "bl": 17, + "name": "DACB_AUTODETECT_INTERRUPT", + "value": [], + "description": "", + "access": "RW", + "bf": 17 + }, + { + "bl": 18, + "name": "DC_HOT_PLUG_DETECT1_INTERRUPT", + "value": [], + "description": "", + "access": "RW", + "bf": 18 + }, + { + "bl": 19, + "name": "DC_HOT_PLUG_DETECT2_INTERRUPT", + "value": [], + "description": "", + "access": "RW", + "bf": 19 + } + ] + }, + "0x00007838": { + "name": "DACA_AUTODETECT_INT_CONTROL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "DACA_AUTODETECT_ACK", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 16, + "name": "DACA_AUTODETECT_INT_ENABLE", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + } + ] + }, + "0x00007D04": { + "name": "DC_HOT_PLUG_DETECT1_INT_STATUS", + "size": 32, + "field": [ + { + "bl": 0, + "name": "DC_HOT_PLUG_DETECT1_INT_STATUS", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "DC_HOT_PLUG_DETECT1_SENSE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + } + ] + }, + "0x00007A28": { + "name": "DACB_AUTODETECT_CONTROL", + "size": 32, + "field": [ + { + "bl": 1, + "name": "DACB_AUTODETECT_MODE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 15, + "name": "DACB_AUTODETECT_FRAME_TIME_COUNTER", + "value": [], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 17, + "name": "DACB_AUTODETECT_CHECK_MASK", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + } + ] + }, + "0x00007D14": { + "name": "DC_HOT_PLUG_DETECT2_INT_STATUS", + "size": 32, + "field": [ + { + "bl": 0, + "name": "DC_HOT_PLUG_DETECT2_INT_STATUS", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "DC_HOT_PLUG_DETECT2_SENSE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + } + ] + }, + "0x00007D18": { + "name": "DC_HOT_PLUG_DETECT2_INT_CONTROL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "DC_HOT_PLUG_DETECT2_INT_ACK", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 8, + "name": "DC_HOT_PLUG_DETECT2_INT_POLARITY", + "value": [], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 16, + "name": "DC_HOT_PLUG_DETECT2_INT_EN", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + } + ] + }, + "0x00006D4C": { + "name": "D2MODE_PRIORITY_B_CNT", + "size": 32, + "field": [ + { + "bl": 14, + "name": "D2MODE_PRIORITY_MARK_B", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 16, + "name": "D2MODE_PRIORITY_B_OFF", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + }, + { + "bl": 20, + "name": "D2MODE_PRIORITY_B_ALWAYS_ON", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + }, + { + "bl": 24, + "name": "D2MODE_PRIORITY_B_FORCE_MASK", + "value": [], + "description": "", + "access": "RW", + "bf": 24 + } + ] + }, + "0x00006D48": { + "name": "D2MODE_PRIORITY_A_CNT", + "size": 32, + "field": [ + { + "bl": 14, + "name": "D2MODE_PRIORITY_MARK_A", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 16, + "name": "D2MODE_PRIORITY_A_OFF", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + }, + { + "bl": 20, + "name": "D2MODE_PRIORITY_A_ALWAYS_ON", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + }, + { + "bl": 24, + "name": "D2MODE_PRIORITY_A_FORCE_MASK", + "value": [], + "description": "", + "access": "RW", + "bf": 24 + } + ] + }, + "0x0000654C": { + "name": "D1MODE_PRIORITY_B_CNT", + "size": 32, + "field": [ + { + "bl": 14, + "name": "D1MODE_PRIORITY_MARK_B", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 16, + "name": "D1MODE_PRIORITY_B_OFF", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + }, + { + "bl": 20, + "name": "D1MODE_PRIORITY_B_ALWAYS_ON", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + }, + { + "bl": 24, + "name": "D1MODE_PRIORITY_B_FORCE_MASK", + "value": [], + "description": "", + "access": "RW", + "bf": 24 + } + ] + } + }, + { + "name": "MC", + "0x00000000": { + "name": "MC_STATUS", + "size": 32, + "field": [ + { + "bl": 0, + "name": "MC_IDLE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + } + ] + }, + "0x00000004": { + "name": "MC_FB_LOCATION", + "size": 32, + "field": [ + { + "bl": 15, + "name": "MC_FB_START", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 31, + "name": "MC_FB_TOP", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + } + ] + }, + "0x00000005": { + "name": "MC_AGP_LOCATION", + "size": 32, + "field": [ + { + "bl": 15, + "name": "MC_AGP_START", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 31, + "name": "MC_AGP_TOP", + "value": [], + "description": "", + "access": "RW", + "bf": 16 + } + ] + }, + "0x00000006": { + "name": "AGP_BASE", + "size": 32, + "field": [ + { + "bl": 31, + "name": "AGP_BASE_ADDR", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + } + ] + }, + "0x00000007": { + "name": "AGP_BASE_2", + "size": 32, + "field": [ + { + "bl": 3, + "name": "AGP_BASE_ADDR_2", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + } + ] + }, + "0x00000009": { + "name": "MC_CNTL1", + "size": 32, + "field": [ + { + "bl": 26, + "name": "ENABLE_PAGE_TABLES", + "value": [], + "description": "", + "access": "RW", + "bf": 26 + } + ] + }, + "0x00000134": { + "name": "HDP_FB_LOCATION", + "size": 32, + "field": [ + { + "bl": 15, + "name": "HDP_FB_START", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + } + ] + }, + "0x00000100": { + "name": "MC_PT0_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_PT", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 17, + "name": "EFFECTIVE_L2_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 23, + "name": "EFFECTIVE_L2_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 21 + }, + { + "bl": 28, + "name": "INVALIDATE_ALL_L1_TLBS", + "value": [], + "description": "", + "access": "RW", + "bf": 28 + }, + { + "bl": 29, + "name": "INVALIDATE_L2_CACHE", + "value": [], + "description": "", + "access": "RW", + "bf": 29 + } + ] + }, + "0x00000102": { + "name": "MC_PT0_CONTEXT0_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_PAGE_TABLE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 2, + "name": "PAGE_TABLE_DEPTH", + "value": [ + { + "name": "PAGE_TABLE_FLAT", + "value": 0, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 1 + } + ] + }, + "0x00000103": { + "name": "MC_PT0_CONTEXT1_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_PAGE_TABLE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 2, + "name": "PAGE_TABLE_DEPTH", + "value": [ + { + "name": "PAGE_TABLE_FLAT", + "value": 0, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 1 + } + ] + }, + "0x00000104": { + "name": "MC_PT0_CONTEXT2_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_PAGE_TABLE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 2, + "name": "PAGE_TABLE_DEPTH", + "value": [ + { + "name": "PAGE_TABLE_FLAT", + "value": 0, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 1 + } + ] + }, + "0x00000105": { + "name": "MC_PT0_CONTEXT3_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_PAGE_TABLE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 2, + "name": "PAGE_TABLE_DEPTH", + "value": [ + { + "name": "PAGE_TABLE_FLAT", + "value": 0, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 1 + } + ] + }, + "0x00000106": { + "name": "MC_PT0_CONTEXT4_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_PAGE_TABLE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 2, + "name": "PAGE_TABLE_DEPTH", + "value": [ + { + "name": "PAGE_TABLE_FLAT", + "value": 0, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 1 + } + ] + }, + "0x00000107": { + "name": "MC_PT0_CONTEXT5_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_PAGE_TABLE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 2, + "name": "PAGE_TABLE_DEPTH", + "value": [ + { + "name": "PAGE_TABLE_FLAT", + "value": 0, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 1 + } + ] + }, + "0x00000108": { + "name": "MC_PT0_CONTEXT6_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_PAGE_TABLE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 2, + "name": "PAGE_TABLE_DEPTH", + "value": [ + { + "name": "PAGE_TABLE_FLAT", + "value": 0, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 1 + } + ] + }, + "0x00000109": { + "name": "MC_PT0_CONTEXT7_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_PAGE_TABLE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 2, + "name": "PAGE_TABLE_DEPTH", + "value": [ + { + "name": "PAGE_TABLE_FLAT", + "value": 0, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 1 + } + ] + }, + "0x00000112": { + "name": "MC_PT0_SYSTEM_APERTURE_LOW_ADDR", + "size": 32, + "field": [] + }, + "0x00000114": { + "name": "MC_PT0_SYSTEM_APERTURE_HIGH_ADDR", + "size": 32, + "field": [] + }, + "0x0000011C": { + "name": "MC_PT0_CONTEXT0_DEFAULT_READ_ADDR", + "size": 32, + "field": [] + }, + "0x0000012C": { + "name": "MC_PT0_CONTEXT0_FLAT_BASE_ADDR", + "size": 32, + "field": [] + }, + "0x0000013C": { + "name": "MC_PT0_CONTEXT0_FLAT_START_ADDR", + "size": 32, + "field": [] + }, + "0x0000014C": { + "name": "MC_PT0_CONTEXT0_FLAT_END_ADDR", + "size": 32, + "field": [] + }, + "0x0000016C": { + "name": "MC_PT0_CLIENT0_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x0000016D": { + "name": "MC_PT0_CLIENT1_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x0000016E": { + "name": "MC_PT0_CLIENT2_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x0000016F": { + "name": "MC_PT0_CLIENT3_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x00000170": { + "name": "MC_PT0_CLIENT4_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x00000171": { + "name": "MC_PT0_CLIENT5_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x00000172": { + "name": "MC_PT0_CLIENT6_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x00000173": { + "name": "MC_PT0_CLIENT7_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x00000174": { + "name": "MC_PT0_CLIENT8_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x00000175": { + "name": "MC_PT0_CLIENT9_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x00000176": { + "name": "MC_PT0_CLIENT10_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x00000177": { + "name": "MC_PT0_CLIENT11_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x00000178": { + "name": "MC_PT0_CLIENT12_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x00000179": { + "name": "MC_PT0_CLIENT13_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x0000017A": { + "name": "MC_PT0_CLIENT14_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x0000017B": { + "name": "MC_PT0_CLIENT15_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x0000017C": { + "name": "MC_PT0_CLIENT16_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x0000017D": { + "name": "MC_PT0_CLIENT17_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + }, + "0x0000017E": { + "name": "MC_PT0_CLIENT18_CNTL", + "size": 32, + "field": [ + { + "bl": 0, + "name": "ENABLE_TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 0 + }, + { + "bl": 1, + "name": "TRANSLATION_MODE_OVERRIDE", + "value": [], + "description": "", + "access": "RW", + "bf": 1 + }, + { + "bl": 9, + "name": "SYSTEM_ACCESS_MODE_MASK", + "value": [ + { + "name": "SYSTEM_ACCESS_MODE_PA_ONLY", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_USE_SYS_MAP", + "value": 1, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_IN_SYS", + "value": 2, + "description": "" + }, + { + "name": "SYSTEM_ACCESS_MODE_NOT_IN_SYS", + "value": 3, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 8 + }, + { + "bl": 10, + "name": "SYSTEM_APERTURE_UNMAPPED_ACCESS", + "value": [ + { + "name": "SYSTEM_APERTURE_UNMAPPED_PASSTHROUGH", + "value": 0, + "description": "" + }, + { + "name": "SYSTEM_APERTURE_UNMAPPED_DEFAULT_PAGE", + "value": 1, + "description": "" + } + ], + "description": "", + "access": "RW", + "bf": 10 + }, + { + "bl": 13, + "name": "EFFECTIVE_L1_CACHE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 11 + }, + { + "bl": 14, + "name": "ENABLE_FRAGMENT_PROCESSING", + "value": [], + "description": "", + "access": "RW", + "bf": 14 + }, + { + "bl": 17, + "name": "EFFECTIVE_L1_QUEUE_SIZE", + "value": [], + "description": "", + "access": "RW", + "bf": 15 + }, + { + "bl": 20, + "name": "INVALIDATE_L1_TLB", + "value": [], + "description": "", + "access": "RW", + "bf": 20 + } + ] + } + } + ] +} diff --git a/src/Makefile.am b/src/Makefile.am index 5cefdc0..1d25b46 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -23,11 +23,14 @@ AUTOMAKE_OPTIONS = foreign bin_PROGRAMS = radeondb -AM_CFLAGS = -std=c99 $(LIBJANSSON_CFLAGS) $(LIBDRM_CFLAGS)$(LIBDRM_RADEON_CFLAGS) +AM_CFLAGS = -std=c99 $(LIBJANSSON_CFLAGS) $(LIBDRM_CFLAGS)$(LIBDRM_RADEON_CFLAGS)\ + $(PCIACCESS_CFLAGS) +noinst_HEADER = radeon.h radeon_priv.h r600_states.h mode.h radeondb_SOURCES = radeondb.c bof.c radeon_pciid.c radeon_ctx.c radeon_bof.c\ radeon_json.c r600_state.c r600_ctx.c mode.c radeon.c radeon_state.c\ - radeon_draw.c -radeondb_LDADD = $(LIBJANSSON_LIBS) $(LIBDRM_LIBS) $(LIBDRM_RADEON_LIBS) + radeon_draw.c radeon_pci.c radeon_reg.c rs600_reg.c +radeondb_LDADD = $(LIBJANSSON_LIBS) $(LIBDRM_LIBS) $(LIBDRM_RADEON_LIBS) $(PCIACCESS_LIBS) -EXTRA_DIST = radeon.h radeon_priv.h r600_states.h mode.h +rs600_reg.c: ../json/rs600.json ../tools/rdb.c + ../tools/rdb -j ../json/rs600.json -h rs600 > rs600_reg.c diff --git a/src/radeon.c b/src/radeon.c index 66dbfc3..2873fa2 100644 --- a/src/radeon.c +++ b/src/radeon.c @@ -157,6 +157,8 @@ struct radeon *radeon_decref(struct radeon *radeon) if (--radeon->refcount > 0) { return NULL; } + if (radeon->mmio) + pci_device_unmap_range(radeon->dev, radeon->mmio, radeon->mmio_size); radeon_mode_cleanup(radeon); radeon_bo_manager_gem_dtor(radeon->bom); radeon_cs_manager_gem_dtor(radeon->csm); diff --git a/src/radeon_pci.c b/src/radeon_pci.c new file mode 100644 index 0000000..90b1106 --- /dev/null +++ b/src/radeon_pci.c @@ -0,0 +1,130 @@ +/* + * Copyright © 2009 Jerome Glisse <glisse@freedesktop.org> + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#include "config.h" +#include <stdio.h> +#include <stdlib.h> +#include <stdint.h> +#include <unistd.h> +#include <string.h> +#include <errno.h> +#include "xf86drm.h" +#include "radeon_priv.h" + +int radeon_probe(struct radeon *radeon) +{ + struct pci_slot_match match; + struct pci_device_iterator *iter; + struct pci_device *device; + int i = 0; + int r = 0; + + radeon->bios = (uint8_t*)malloc(256*1024); + if (radeon->bios == NULL) { + fprintf(stderr, "Failed to allocate bios copy\n"); + return -1; + } + if (pci_system_init()) { + fprintf(stderr, "Failed to initialize libpciaccess\n"); + return -1; + } + match.domain = PCI_MATCH_ANY; + match.bus = PCI_MATCH_ANY; + match.dev = PCI_MATCH_ANY; + match.func = 0; + match.match_data = 0; + iter = pci_slot_match_iterator_create(&match); + while ((device = pci_device_next(iter))) { + pci_device_probe(device); + /* ATI vendor id 0x1002 and we are looking for a video + * card class 0x03 with subclass 0x00 (VGA) + */ + if (device->vendor_id == 0x1002) { + radeon->family = radeon_family_from_device(device->device_id); + radeon->device = device->device_id; + if (radeon->family != CHIP_UNKNOWN) { + for (i = 0; i < 6; i++) { + if (device->regions[i].size == 64 * 1024) { + radeon->mmio_base = device->regions[i].base_addr; + radeon->mmio_size = device->regions[i].size; + } + } + radeon->dev = device; + break; + } + } + } + pci_iterator_destroy(iter); + if (!radeon->dev) { + fprintf(stderr, "Cannot find radeon device\n"); + return -1; + } + if (pci_device_map_range(radeon->dev, radeon->mmio_base, radeon->mmio_size, + PCI_DEV_MAP_FLAG_WRITABLE, + (void**)&radeon->mmio)) { + fprintf(stderr, "Mapping mmio failed (are you root ?)\n"); + return -1; + } + r = pci_device_read_rom(radeon->dev, radeon->bios); + if (r) { + fprintf(stderr, "Cannot read rom %d\n", r); + return -1; + } + return 0; +} + +void radeon_close(struct radeon *radeon) +{ + if (pci_device_unmap_range(radeon->dev, radeon->mmio, radeon->mmio_size)) { + fprintf(stderr, "Unmapping mmio failed\n"); + } +} + +u32 radeon_mmio_rd32(struct radeon *radeon, u32 offset) +{ + u32 value; + + if (radeon->mmio == NULL) { + fprintf(stderr, "(%s:%d) internal error\n", __func__, __LINE__); + exit(1); + } + value = *(u32 * volatile)(radeon->mmio + offset); + return value; +} + +void radeon_mmio_wr32(struct radeon *radeon, u32 offset, u32 value) +{ + if (radeon->mmio == NULL) { + fprintf(stderr, "(%s:%d) internal error\n", __func__, __LINE__); + exit(1); + } + *(u32 * volatile)(radeon->mmio + offset) = value; +} + +struct radeon *radeon_new_from_pci(void) +{ + struct radeon *radeon; + int r; + + radeon = calloc(1, sizeof(*radeon)); + if (radeon == NULL) + return NULL; + radeon->refcount = 1; + if (radeon_probe(radeon)) { + return radeon_decref(radeon); + } + return radeon; +} diff --git a/src/radeon_priv.h b/src/radeon_priv.h index a30ba73..6d04687 100644 --- a/src/radeon_priv.h +++ b/src/radeon_priv.h @@ -24,6 +24,7 @@ #include "radeon_cs.h" #include <errno.h> #include <jansson.h> +#include <pciaccess.h> #include "bof.h" #include "radeon.h" @@ -118,6 +119,11 @@ struct radeon { const struct radeon_type *type; const struct radeon_asic *asic; struct radeon_ctx *ctx; + struct pci_device *dev; + unsigned char * volatile mmio; + pciaddr_t mmio_base; + pciaddr_t mmio_size; + uint8_t *bios; }; extern int radeon_open_fd(void); @@ -220,6 +226,10 @@ extern void *copy_object(void *ptr, unsigned size); extern void memset_bo(struct radeon_bo *bo, u32 value); extern void memcpy_bo(struct radeon_bo *bo, u32 *src, u32 size); +extern u32 radeon_mmio_rd32(struct radeon *radeon, u32 offset); +extern void radeon_mmio_wr32(struct radeon *radeon, u32 offset, u32 value); +struct radeon *radeon_new_from_pci(void); + #define radeon_ctx_get_dst_surface(ctx, dst) (ctx)->radeon->asic->ctx_get_dst_surface((ctx), (dst)) #define radeon_ctx_next_reloc(ctx, reloc) (ctx)->radeon->asic->ctx_next_reloc(ctx, reloc) diff --git a/src/radeon_reg.c b/src/radeon_reg.c new file mode 100644 index 0000000..1a24466 --- /dev/null +++ b/src/radeon_reg.c @@ -0,0 +1,139 @@ +/* + * Copyright 2010 Jerome Glisse <glisse@freedesktop.org> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: + * Jerome Glisse + */ +#include "radeon_priv.h" +#include "radeon_reg.h" + +void radeon_register_dump(const char *bname) +{ + struct radeon *radeon = radeon_new_from_pci(); + struct reg_block *block; + struct reg *reg; + unsigned nreg; + unsigned nblock; + unsigned bid, i; + + if (radeon == NULL) { + fprintf(stderr, "%s didn't found GPU\n", __func__); + return; + } + switch (radeon->family) { + case CHIP_RS600: + block = rs600_block; + reg = rs600_reg; + nblock = rs600_nblock; + nreg = rs600_nreg; + break; + case CHIP_R600: + case CHIP_RV610: + case CHIP_RV630: + case CHIP_RV670: + case CHIP_RV620: + case CHIP_RV635: + case CHIP_RS780: + case CHIP_RS880: + case CHIP_RV770: + case CHIP_RV730: + case CHIP_RV710: + case CHIP_RV740: + case CHIP_R100: + case CHIP_RV100: + case CHIP_RS100: + case CHIP_RV200: + case CHIP_RS200: + case CHIP_R200: + case CHIP_RV250: + case CHIP_RS300: + case CHIP_RV280: + case CHIP_R300: + case CHIP_R350: + case CHIP_RV350: + case CHIP_RV380: + case CHIP_R420: + case CHIP_R423: + case CHIP_RV410: + case CHIP_RS400: + case CHIP_RS480: + case CHIP_RS690: + case CHIP_RS740: + case CHIP_RV515: + case CHIP_R520: + case CHIP_RV530: + case CHIP_RV560: + case CHIP_RV570: + case CHIP_R580: + case CHIP_CEDAR: + case CHIP_REDWOOD: + case CHIP_JUNIPER: + case CHIP_CYPRESS: + case CHIP_HEMLOCK: + default: + fprintf(stderr, "%s unknown or unsupported chipset 0x%04X\n", + __func__, radeon->device); + return; + } + if (bname) { + for (bid = 0; bid < nblock; bid++) { + if (!strcmp(bname, block[bid].name)) + break; + } + if (bid == nblock) { + fprintf(stderr, "%s unknown block %s for chipset 0x%04X\n", + __func__, bname, radeon->device); + } + } + for (i = 0; i < nreg; i++) { + if ((bname && reg[i].block_id == bid) || bname == NULL) { + bid = reg[i].block_id; + printf("%s 0x%08X 0x%08X %s\n", block[bid].name, reg[i].offset, + block[bid].rreg(radeon, reg[i].offset), reg[i].name); + } + } + radeon_decref(radeon); +} + + +/* RS600 */ +u32 rs600_MMIO_rreg(struct radeon *radeon, u32 offset) +{ + return radeon_mmio_rd32(radeon, offset); +} + +void rs600_MMIO_wreg(struct radeon *radeon, u32 offset, u32 value) +{ + radeon_mmio_wr32(radeon, offset, value); +} + +u32 rs600_MC_rreg(struct radeon *radeon, u32 offset) +{ + radeon_mmio_wr32(radeon, 0x0070, (offset & 0xFFFF) | (1 << 21)); + return radeon_mmio_rd32(radeon, 0x0074); +} + +void rs600_MC_wreg(struct radeon *radeon, u32 offset, u32 value) +{ + radeon_mmio_wr32(radeon, 0x0070, (offset & 0xFFFF) | (1 << 21) | (1 << 23)); + radeon_mmio_wr32(radeon, 0x0074, value); +} diff --git a/src/radeon_reg.h b/src/radeon_reg.h new file mode 100644 index 0000000..bc35398 --- /dev/null +++ b/src/radeon_reg.h @@ -0,0 +1,60 @@ +/* + * Copyright 2010 Jerome Glisse <glisse@freedesktop.org> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: + * Jerome Glisse + */ +#ifndef RADEON_REG_H +#define RADEON_REG_H + +#include <stdio.h> +#include <stdint.h> + +#include "radeon.h" + +typedef u32 (*radeon_rreg_t)(struct radeon *radeon, u32 offset); +typedef void (*radeon_wreg_t)(struct radeon *radeon, u32 offset, u32 value); + +struct reg_block { + unsigned id; + char name[128]; + radeon_rreg_t rreg; + radeon_wreg_t wreg; +}; + +struct reg { + unsigned offset; + unsigned block_id; + char name[128]; +}; + +/* RS600 */ +u32 rs600_MMIO_rreg(struct radeon *radeon, u32 offset); +void rs600_MMIO_wreg(struct radeon *radeon, u32 offset, u32 value); +u32 rs600_MC_rreg(struct radeon *radeon, u32 offset); +void rs600_MC_wreg(struct radeon *radeon, u32 offset, u32 value); +extern struct reg_block rs600_block[]; +extern struct reg rs600_reg[]; +extern unsigned rs600_nblock; +extern unsigned rs600_nreg; + +#endif diff --git a/src/radeondb.c b/src/radeondb.c index b81fb5f..6d3dd74 100644 --- a/src/radeondb.c +++ b/src/radeondb.c @@ -43,6 +43,7 @@ static int conv(const char *file); static int json(const char *file); static int play(const char *file); static int dump(const char *file); +void radeon_register_dump(const char *bname); int main(int argc, char *argv[]) { @@ -51,13 +52,14 @@ int main(int argc, char *argv[]) {"play", required_argument, 0, 'p'}, {"dump", required_argument, 0, 'd'}, {"conv", required_argument, 0, 'c'}, + {"reg", required_argument, 0, 'r'}, {0, 0, 0, 0} }; int option_id; int c; while (1) { - c = getopt_long(argc, argv, "p:d:j:c:", options, &option_id); + c = getopt_long(argc, argv, "p:d:j:c:r:", options, &option_id); if (c == -1) break; switch (c) { @@ -69,6 +71,9 @@ int main(int argc, char *argv[]) return conv(optarg); case 'p': return play(optarg); + case 'r': + radeon_register_dump(optarg); + return 0; case '?': /* getopt_long already printed an error message. */ break; diff --git a/src/rs600_reg.c b/src/rs600_reg.c new file mode 100644 index 0000000..7d79876 --- /dev/null +++ b/src/rs600_reg.c @@ -0,0 +1,83 @@ +/* this file is autogenerated don't edit */ +#include "radeon_reg.h" + +struct reg_block rs600_block[] = { + {0, "MMIO", rs600_MMIO_rreg, rs600_MMIO_wreg}, + {1, "MC", rs600_MC_rreg, rs600_MC_wreg}, +}; + +unsigned rs600_nblock = 2; + +struct reg rs600_reg[] = { + {0x00000040, 0, "GEN_INT_CNTL"}, + {0x00007D08, 0, "DC_HOT_PLUG_DETECT1_INT_CONTROL"}, + {0x00000E40, 0, "RBBM_STATUS"}, + {0x00000070, 0, "MC_IND_INDEX"}, + {0x000060A4, 0, "D1CRTC_STATUS_FRAME_COUNT"}, + {0x0000004C, 0, "BUS_CNTL"}, + {0x00007A38, 0, "DACB_AUTODETECT_INT_CONTROL"}, + {0x00006548, 0, "D1MODE_PRIORITY_A_CNT"}, + {0x000007C0, 0, "CP_STAT"}, + {0x00007D10, 0, "DC_HOT_PLUG_DETECT2_CONTROL"}, + {0x00007828, 0, "DACA_AUTODETECT_CONTROL"}, + {0x00000044, 0, "GEN_INT_STATUS"}, + {0x00006540, 0, "DxMODE_INT_MASK"}, + {0x00006534, 0, "D1MODE_VBLANK_STATUS"}, + {0x00000074, 0, "MC_IND_DATA"}, + {0x000068A4, 0, "D2CRTC_STATUS_FRAME_COUNT"}, + {0x00006D34, 0, "D2MODE_VBLANK_STATUS"}, + {0x00007D00, 0, "DC_HOT_PLUG_DETECT1_CONTROL"}, + {0x00007EDC, 0, "DISP_INTERRUPT_STATUS"}, + {0x00007838, 0, "DACA_AUTODETECT_INT_CONTROL"}, + {0x00007A28, 0, "DACB_AUTODETECT_CONTROL"}, + {0x00007D04, 0, "DC_HOT_PLUG_DETECT1_INT_STATUS"}, + {0x00007D14, 0, "DC_HOT_PLUG_DETECT2_INT_STATUS"}, + {0x00007D18, 0, "DC_HOT_PLUG_DETECT2_INT_CONTROL"}, + {0x00006D4C, 0, "D2MODE_PRIORITY_B_CNT"}, + {0x0000654C, 0, "D1MODE_PRIORITY_B_CNT"}, + {0x00006D48, 0, "D2MODE_PRIORITY_A_CNT"}, + {0x0000017E, 1, "MC_PT0_CLIENT18_CNTL"}, + {0x00000134, 1, "HDP_FB_LOCATION"}, + {0x00000009, 1, "MC_CNTL1"}, + {0x00000005, 1, "MC_AGP_LOCATION"}, + {0x0000013C, 1, "MC_PT0_CONTEXT0_FLAT_START_ADDR"}, + {0x00000103, 1, "MC_PT0_CONTEXT1_CNTL"}, + {0x00000175, 1, "MC_PT0_CLIENT9_CNTL"}, + {0x00000000, 1, "MC_STATUS"}, + {0x00000179, 1, "MC_PT0_CLIENT13_CNTL"}, + {0x00000004, 1, "MC_FB_LOCATION"}, + {0x00000006, 1, "AGP_BASE"}, + {0x00000007, 1, "AGP_BASE_2"}, + {0x00000100, 1, "MC_PT0_CNTL"}, + {0x00000102, 1, "MC_PT0_CONTEXT0_CNTL"}, + {0x00000104, 1, "MC_PT0_CONTEXT2_CNTL"}, + {0x0000016C, 1, "MC_PT0_CLIENT0_CNTL"}, + {0x00000105, 1, "MC_PT0_CONTEXT3_CNTL"}, + {0x0000011C, 1, "MC_PT0_CONTEXT0_DEFAULT_READ_ADDR"}, + {0x0000016D, 1, "MC_PT0_CLIENT1_CNTL"}, + {0x00000106, 1, "MC_PT0_CONTEXT4_CNTL"}, + {0x0000016E, 1, "MC_PT0_CLIENT2_CNTL"}, + {0x00000107, 1, "MC_PT0_CONTEXT5_CNTL"}, + {0x0000016F, 1, "MC_PT0_CLIENT3_CNTL"}, + {0x00000108, 1, "MC_PT0_CONTEXT6_CNTL"}, + {0x00000109, 1, "MC_PT0_CONTEXT7_CNTL"}, + {0x00000112, 1, "MC_PT0_SYSTEM_APERTURE_LOW_ADDR"}, + {0x0000017B, 1, "MC_PT0_CLIENT15_CNTL"}, + {0x00000114, 1, "MC_PT0_SYSTEM_APERTURE_HIGH_ADDR"}, + {0x0000012C, 1, "MC_PT0_CONTEXT0_FLAT_BASE_ADDR"}, + {0x0000014C, 1, "MC_PT0_CONTEXT0_FLAT_END_ADDR"}, + {0x00000170, 1, "MC_PT0_CLIENT4_CNTL"}, + {0x00000171, 1, "MC_PT0_CLIENT5_CNTL"}, + {0x00000172, 1, "MC_PT0_CLIENT6_CNTL"}, + {0x00000173, 1, "MC_PT0_CLIENT7_CNTL"}, + {0x00000174, 1, "MC_PT0_CLIENT8_CNTL"}, + {0x00000176, 1, "MC_PT0_CLIENT10_CNTL"}, + {0x00000177, 1, "MC_PT0_CLIENT11_CNTL"}, + {0x00000178, 1, "MC_PT0_CLIENT12_CNTL"}, + {0x0000017A, 1, "MC_PT0_CLIENT14_CNTL"}, + {0x0000017C, 1, "MC_PT0_CLIENT16_CNTL"}, + {0x0000017D, 1, "MC_PT0_CLIENT17_CNTL"}, +}; + +unsigned rs600_nreg = 68; + diff --git a/tools/Makefile.am b/tools/Makefile.am new file mode 100644 index 0000000..86457c6 --- /dev/null +++ b/tools/Makefile.am @@ -0,0 +1,29 @@ +# Copyright 2009 Dave Airlie +# Copyright 2010 Jerome Glisse +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# on the rights to use, copy, modify, merge, publish, distribute, sub +# license, and/or sell copies of the Software, and to permit persons to whom +# the Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +noinst_PROGRAMS = rdb + +AM_CFLAGS = -std=c99 $(LIBJANSSON_CFLAGS) $(LIBDRM_CFLAGS)$(LIBDRM_RADEON_CFLAGS) + +noinst_HEADER = rdb_json.h + +rdb_SOURCES = rdb.c rdb_json.c +rdb_LDADD = $(LIBJANSSON_LIBS) diff --git a/tools/rdb.c b/tools/rdb.c new file mode 100644 index 0000000..99849ea --- /dev/null +++ b/tools/rdb.c @@ -0,0 +1,153 @@ +/* + * Copyright 2010 Jerome Glisse <glisse@freedesktop.org> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: + * Jerome Glisse + */ +#include "config.h" +#include <stdlib.h> +#include <string.h> +#include <errno.h> +#include <getopt.h> +#include <jansson.h> +#include "rdb_json.h" + +void usage(void) +{ + printf("usage: rdb [arguments] [file ..]\n\n"); + printf("arguments:\n"); + printf(" -j replay json command stream\n"); + printf(" -l list\n"); + printf(" -h header\n"); +} + +struct param { + int list; + int header; + char *file; + char *list_str; + char *header_name; +}; + +int main(int argc, char *argv[]) +{ + static struct option options[] = { + {"json", required_argument, 0, 'j'}, + {"list", required_argument, 0, 'l'}, + {"header", required_argument, 0, 'h'}, + {0, 0, 0, 0} + }; + struct param param; + struct rdb_json *rdb; + json_t *block, *reg, *tmp, *name; + unsigned i; + int option_id; + void *iter; + int c; + + memset(¶m, 0, sizeof(struct param)); + while (1) { + c = getopt_long(argc, argv, "l:j:h:", options, &option_id); + if (c == -1) + break; + switch (c) { + case 'l': + param.list = 1; + param.list_str = strdup(optarg); + break; + case 'j': + param.file = strdup(optarg); + break; + case 'h': + param.header = 1; + param.header_name = strdup(optarg); + break; + case '?': + /* getopt_long already printed an error message. */ + break; + default: + abort (); + } + } + if (param.file == NULL) { + usage(); + return -1; + } + rdb = rdb_json_load(param.file); + if (rdb == NULL) { + return -1; + } + if (param.list) { + if (strstr(param.list_str, "r")) { + for (i = 0; i < json_array_size(rdb->block); i++) { + block = json_array_get(rdb->block, i); + iter = json_object_iter(block); + while (iter) { + reg = json_object_iter_value(iter); + if (json_is_object(reg)) { + tmp = json_object_get(reg, "name"); + printf("%s\n", json_string_value(tmp)); + } + iter = json_object_iter_next(block, iter); + } + } + } + return 0; + } + if (param.header_name) { + printf("/* this file is autogenerated don't edit */\n"); + printf("#include \"radeon_reg.h\"\n\n"); + printf("struct reg_block %s_block[] = {\n", param.header_name); + for (i = 0; i < json_array_size(rdb->block); i++) { + block = json_array_get(rdb->block, i); + tmp = json_object_get(block, "name"); + printf("\t{%d, \"%s\", %s_%s_rreg, %s_%s_wreg},\n", i, + json_string_value(tmp), param.header_name, + json_string_value(tmp), param.header_name, + json_string_value(tmp)); + } + printf("};\n\n"); + printf("unsigned %s_nblock = %d;\n\n", param.header_name, json_array_size(rdb->block)); + + printf("struct reg %s_reg[] = {\n", param.header_name); + for (i = 0, c = 0; i < json_array_size(rdb->block); i++) { + block = json_array_get(rdb->block, i); + name = json_object_get(block, "name"); + iter = json_object_iter(block); + while (iter) { + unsigned offset; + reg = json_object_iter_value(iter); + if (json_is_object(reg)) { + offset = strtoul(json_object_iter_key(iter), NULL, 16); + tmp = json_object_get(reg, "name"); + printf("\t{0x%08X, %4d, \"%s\"},\n", + offset, i, json_string_value(tmp)); + c++; + } + iter = json_object_iter_next(block, iter); + } + } + printf("};\n\n"); + printf("unsigned %s_nreg = %d;\n\n", param.header_name, c); + } + return 0; +} diff --git a/tools/rdb_json.c b/tools/rdb_json.c new file mode 100644 index 0000000..40c9d36 --- /dev/null +++ b/tools/rdb_json.c @@ -0,0 +1,123 @@ +/* + * Copyright 2010 Jerome Glisse <glisse@freedesktop.org> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: + * Jerome Glisse + */ +#include <stdio.h> +#include <stdlib.h> +#include <stdint.h> +#include <string.h> +#include <errno.h> +#include "jansson.h" +#include "rdb_json.h" + +json_t *rdb_json_block_find(struct rdb_json *rdb, const char *name) +{ + unsigned i; + json_t *block; + json_t *bname; + + for (i = 0; i < json_array_size(rdb->block); i++) { + block = json_array_get(rdb->block, i); + bname = json_object_get(block, "name"); + if (!strcmp(name, json_string_value(bname))) + return block; + } + return NULL; +} + +int rdb_json_block_add(struct rdb_json *rdb, const char *name) +{ + unsigned i; + json_t *block; + json_t *bname; + + block = json_object(); + bname = json_string(name); + json_object_set_new(block, "name", bname); + return json_array_append_new(rdb->block, block); +} + +json_t *rdb_json_block_reg_find(json_t *block, unsigned offset) +{ + char tmp[16]; + + sprintf(tmp, "0x%08X", offset); + return json_object_get(block, tmp); +} + +int rdb_json_block_reg_add(json_t *block, unsigned offset, json_t *reg) +{ + char tmp[16]; + + sprintf(tmp, "0x%08X", offset); + return json_object_set_new(block, tmp, reg); +} + +struct rdb_json *rdb_json_load(const char *file) +{ + struct rdb_json *rdb = calloc(1, sizeof(struct rdb_json)); + json_error_t error; + + if (rdb == NULL) + return NULL; + rdb->root = json_load_file(file, &error); + if (rdb->root == NULL) { + fprintf(stderr, "%s failed to load %s (%d:%s)\n", __func__, file, error.line, error.text); + free(rdb); + return NULL; + } + rdb->block = json_object_get(rdb->root, "block"); + return rdb; +} + +json_t *rdb_json_block_reg_find_name(json_t *block, const char *name) +{ + void *iter; + json_t *reg, *tmp; + + iter = json_object_iter(block); + while (iter) { + reg = json_object_iter_value(iter); + if (json_is_object(reg)) { + tmp = json_object_get(reg, "name"); + if (!strcmp(name, json_string_value(tmp))) + return reg; + } + iter = json_object_iter_next(block, iter); + } + return NULL; +} + +char *strdup(const char *str) +{ + char *nstr; + + if (str == NULL) + return NULL; + nstr = malloc(strlen(str) + 1); + if (nstr == NULL) + return NULL; + strcpy(nstr, str); + return nstr; +} diff --git a/tools/rdb_json.h b/tools/rdb_json.h new file mode 100644 index 0000000..aa66722 --- /dev/null +++ b/tools/rdb_json.h @@ -0,0 +1,49 @@ +/* + * Copyright 2010 Jerome Glisse <glisse@freedesktop.org> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: + * Jerome Glisse + */ +#ifndef RDB_JSON_H +#define RDB_JSON_H + +#include <stdio.h> +#include <stdint.h> +#include "jansson.h" + +struct rdb_json { + json_t *root; + json_t *block; +}; + +int rdb_json_block_add(struct rdb_json *rdb, const char *name); +json_t *rdb_json_block_find(struct rdb_json *rdb, const char *name); + +int rdb_json_block_reg_add(json_t *block, unsigned offset, json_t *reg); +json_t *rdb_json_block_reg_find(json_t *block, unsigned offset); +json_t *rdb_json_block_reg_find_name(json_t *block, const char *name); + +struct rdb_json *rdb_json_load(const char *file); + +char *strdup(const char *str); + +#endif |