drm/amdgpu: add VCN function in NBIO v7.7
authorSonny Jiang <sonny.jiang@amd.com>
Thu, 21 Jul 2022 17:27:09 +0000 (13:27 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 28 Jul 2022 20:28:54 +0000 (16:28 -0400)
Add function to support VCN_4_0_2 doorbell

Signed-off-by: Sonny Jiang <sonny.jiang@amd.com>
Reviewed-by: James Zhu <James.Zhu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/nbio_v7_7.c

index e786b825cea9a72a743f81c2724ce96e44a9518e..01e8288d09a8f21e7df4152c13a2c1d4a6481613 100644 (file)
@@ -83,6 +83,26 @@ static void nbio_v7_7_sdma_doorbell_range(struct amdgpu_device *adev, int instan
        WREG32_PCIE_PORT(reg, doorbell_range);
 }
 
+static void nbio_v7_7_vcn_doorbell_range(struct amdgpu_device *adev, bool use_doorbell,
+                                       int doorbell_index, int instance)
+{
+       u32 reg = SOC15_REG_OFFSET(NBIO, 0, regGDC0_BIF_VCN0_DOORBELL_RANGE);
+       u32 doorbell_range = RREG32_PCIE_PORT(reg);
+
+       if (use_doorbell) {
+               doorbell_range = REG_SET_FIELD(doorbell_range,
+                                              GDC0_BIF_VCN0_DOORBELL_RANGE, OFFSET,
+                                              doorbell_index);
+               doorbell_range = REG_SET_FIELD(doorbell_range,
+                                              GDC0_BIF_VCN0_DOORBELL_RANGE, SIZE, 8);
+       } else {
+               doorbell_range = REG_SET_FIELD(doorbell_range,
+                                              GDC0_BIF_VCN0_DOORBELL_RANGE, SIZE, 0);
+       }
+
+       WREG32_PCIE_PORT(reg, doorbell_range);
+}
+
 static void nbio_v7_7_enable_doorbell_aperture(struct amdgpu_device *adev,
                                               bool enable)
 {
@@ -238,6 +258,7 @@ const struct amdgpu_nbio_funcs nbio_v7_7_funcs = {
        .mc_access_enable = nbio_v7_7_mc_access_enable,
        .get_memsize = nbio_v7_7_get_memsize,
        .sdma_doorbell_range = nbio_v7_7_sdma_doorbell_range,
+       .vcn_doorbell_range = nbio_v7_7_vcn_doorbell_range,
        .enable_doorbell_aperture = nbio_v7_7_enable_doorbell_aperture,
        .enable_doorbell_selfring_aperture = nbio_v7_7_enable_doorbell_selfring_aperture,
        .ih_doorbell_range = nbio_v7_7_ih_doorbell_range,