soc_v1_0_grbm_select(adev, me, pipe, q, vm, GET_INST(GC, xcc_id));
}
+#define regGFX_IMU_PARTITION_SWITCH 0x5f8c
+#define regGFX_IMU_PARTITION_SWITCH_BASE_IDX 1
+#define GFX_IMU_PARTITION_SWITCH__TOTAL_XCCS_IN_XCP__SHIFT 0x2
+#define GFX_IMU_PARTITION_SWITCH__TOTAL_XCCS_IN_XCP_MASK 0x0000003CL
+
static int gfx_v12_1_get_xccs_per_xcp(struct amdgpu_device *adev)
{
- /* Fill this in when the interface is ready */
- return 1;
+ u32 reg_data;
+
+ /* the register data is expected to be the same on all instances */
+ reg_data = RREG32_SOC15(GC, GET_INST(GC, 0), regGFX_IMU_PARTITION_SWITCH);
+
+ return REG_GET_FIELD(reg_data, GFX_IMU_PARTITION_SWITCH, TOTAL_XCCS_IN_XCP);
}
static int gfx_v12_1_ih_to_xcc_inst(struct amdgpu_device *adev, int ih_node)