]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/amdgpu/vcn: add a generic helper for set_power_gating_state
authorAlex Deucher <alexander.deucher@amd.com>
Tue, 26 Nov 2024 17:30:30 +0000 (12:30 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 27 Feb 2025 20:52:31 +0000 (15:52 -0500)
It's common for all VCN variants.

Reviewed-by: Boyuan Zhang <Boyuan.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h

index 81bfd8a9d8268cb1fa41b9d38c92a724200dea29..e4ef0fb970b29230d6f253dcceab0b28129135e4 100644 (file)
@@ -1397,3 +1397,26 @@ void amdgpu_debugfs_vcn_sched_mask_init(struct amdgpu_device *adev)
                            &amdgpu_debugfs_vcn_sched_mask_fops);
 #endif
 }
+
+/**
+ * vcn_set_powergating_state - set VCN block powergating state
+ *
+ * @ip_block: amdgpu_ip_block pointer
+ * @state: power gating state
+ *
+ * Set VCN block powergating state
+ */
+int vcn_set_powergating_state(struct amdgpu_ip_block *ip_block,
+                             enum amd_powergating_state state)
+{
+       struct amdgpu_device *adev = ip_block->adev;
+       int ret = 0, i;
+
+       for (i = 0; i < adev->vcn.num_vcn_inst; ++i) {
+               struct amdgpu_vcn_inst *vinst = &adev->vcn.inst[i];
+
+               ret |= vinst->set_pg_state(vinst, state);
+       }
+
+       return ret;
+}
index 508fa022df78cd4e99beb36df9d9fe5572e1838f..a023f46ec904afa1868e924866259b4a5020c42b 100644 (file)
@@ -546,4 +546,7 @@ int amdgpu_vcn_sysfs_reset_mask_init(struct amdgpu_device *adev);
 void amdgpu_vcn_sysfs_reset_mask_fini(struct amdgpu_device *adev);
 void amdgpu_debugfs_vcn_sched_mask_init(struct amdgpu_device *adev);
 
+int vcn_set_powergating_state(struct amdgpu_ip_block *ip_block,
+                             enum amd_powergating_state state);
+
 #endif