diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/soc15_common.h')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/soc15_common.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/soc15_common.h b/drivers/gpu/drm/amd/amdgpu/soc15_common.h index 2b96c806baa1..e8df6d820dbe 100644 --- a/drivers/gpu/drm/amd/amdgpu/soc15_common.h +++ b/drivers/gpu/drm/amd/amdgpu/soc15_common.h | |||
| @@ -45,13 +45,31 @@ struct nbio_pcie_index_data { | |||
| 45 | u32 index_offset; | 45 | u32 index_offset; |
| 46 | u32 data_offset; | 46 | u32 data_offset; |
| 47 | }; | 47 | }; |
| 48 | // Register Access Macro | 48 | |
| 49 | /* Register Access Macros */ | ||
| 49 | #define SOC15_REG_OFFSET(ip, inst, reg) (0 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG0 + reg : \ | 50 | #define SOC15_REG_OFFSET(ip, inst, reg) (0 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG0 + reg : \ |
| 50 | (1 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG1 + reg : \ | 51 | (1 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG1 + reg : \ |
| 51 | (2 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG2 + reg : \ | 52 | (2 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG2 + reg : \ |
| 52 | (3 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG3 + reg : \ | 53 | (3 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG3 + reg : \ |
| 53 | (ip##_BASE__INST##inst##_SEG4 + reg))))) | 54 | (ip##_BASE__INST##inst##_SEG4 + reg))))) |
| 54 | 55 | ||
| 56 | #define WREG32_FIELD15(ip, idx, reg, field, val) \ | ||
| 57 | WREG32(SOC15_REG_OFFSET(ip, idx, mm##reg), (RREG32(SOC15_REG_OFFSET(ip, idx, mm##reg)) & ~REG_FIELD_MASK(reg, field)) | (val) << REG_FIELD_SHIFT(reg, field)) | ||
| 58 | |||
| 59 | #define RREG32_SOC15(ip, inst, reg) \ | ||
| 60 | RREG32( (0 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG0 + reg : \ | ||
| 61 | (1 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG1 + reg : \ | ||
| 62 | (2 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG2 + reg : \ | ||
| 63 | (3 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG3 + reg : \ | ||
| 64 | (ip##_BASE__INST##inst##_SEG4 + reg)))))) | ||
| 65 | |||
| 66 | #define WREG32_SOC15(ip, inst, reg, value) \ | ||
| 67 | WREG32( (0 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG0 + reg : \ | ||
| 68 | (1 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG1 + reg : \ | ||
| 69 | (2 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG2 + reg : \ | ||
| 70 | (3 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG3 + reg : \ | ||
| 71 | (ip##_BASE__INST##inst##_SEG4 + reg))))), value) | ||
| 72 | |||
| 55 | #endif | 73 | #endif |
| 56 | 74 | ||
| 57 | 75 | ||
