summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.c
diff options
context:
space:
mode:
authorLijo Lazar <lijo.lazar@amd.com>2025-12-08 18:26:09 +0530
committerAlex Deucher <alexander.deucher@amd.com>2026-03-02 16:42:38 -0500
commitf4eb08f8b216c334752246fe24e1304477d78968 (patch)
tree5820c2ff24a9f14af214d174f60e506a4b52c1c5 /drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.c
parent3d77ca68eb0b48f88cc891d1b98f109b68e2ffcf (diff)
downloadlinux-next-f4eb08f8b216c334752246fe24e1304477d78968.tar.gz
linux-next-f4eb08f8b216c334752246fe24e1304477d78968.zip
drm/amdgpu: Add smc method to register block
Define register access block which consolidates different register access methods. Add smc method to register access block. Signed-off-by: Lijo Lazar <lijo.lazar@amd.com> Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.c
index 4b8888f82b64..5debc5c39101 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.c
@@ -33,6 +33,31 @@
#define AMDGPU_PCIE_INDEX_HI_FALLBACK (0x44 >> 2)
#define AMDGPU_PCIE_DATA_FALLBACK (0x3C >> 2)
+void amdgpu_reg_access_init(struct amdgpu_device *adev)
+{
+ spin_lock_init(&adev->reg.smc.lock);
+ adev->reg.smc.rreg = NULL;
+ adev->reg.smc.wreg = NULL;
+}
+
+uint32_t amdgpu_reg_smc_rd32(struct amdgpu_device *adev, uint32_t reg)
+{
+ if (!adev->reg.smc.rreg) {
+ dev_err_once(adev->dev, "SMC register read not supported\n");
+ return 0;
+ }
+ return adev->reg.smc.rreg(adev, reg);
+}
+
+void amdgpu_reg_smc_wr32(struct amdgpu_device *adev, uint32_t reg, uint32_t v)
+{
+ if (!adev->reg.smc.wreg) {
+ dev_err_once(adev->dev, "SMC register write not supported\n");
+ return;
+ }
+ adev->reg.smc.wreg(adev, reg, v);
+}
+
/*
* register access helper functions.
*/